package com.shujia.wyh;

/*
    1.注册驱动（告诉Java程序，即将连接的是哪个品牌的数据库）
    2.获取连接（表示JVM的进程和数据库进程之间的通道打开了，这属于进程之间的通信，使用完后记得关闭通道）。
    3.获取数据库操作对象（专门执行sql语句的对象）
    4.执行SQL语句（DQL,DML…）
    5.处理查询结果集 （只有当第四步执行的是select语句的时候，才有本步）
    6.释放资源（使用完资源后一定要关闭资源，Java和数据库之间属于进程间的通信，开启之后一定要记得关闭）
 */

import com.mysql.jdbc.Driver;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo1 {
    public static void main(String[] args) throws Exception{
        //第一种连接方式

        // 1.注册驱动（告诉Java程序，即将连接的是哪个品牌的数据库）
        // jdk帮助文档中提供了一个类让我们去注册驱动 DriverManager
        //但是通过观察后发现，DriverManager类中并没有构造方法，就意味着无法创建对象
        //但是没关系，我们又观察发现，该类中的方法都是静态的，就意味着可以通过DriverManager类直接调用
        //静态方法注册驱动：static void registerDriver(Driver driver) 注册与给定的驱动程序 DriverManager 。
        //通过观察后又发现，registerDriver方法中需要传入一个实现了java.sql.Driver接口的实现类
        //而恰好我们引入的mysql驱动包中就有一个类实现了java.sql.Driver接口
        //mysql驱动包中正好有一个类Driver实现了java.sql.Driver的接口
        DriverManager.registerDriver(new Driver());


        //2.获取连接（表示JVM的进程和数据库进程之间的通道打开了，这属于进程之间的通信，使用完后记得关闭通道）。
        //static Connection getConnection(String url, String user, String password)
        //尝试建立与给定数据库URL的连接。
        /**
         * url: 统一资源定位符
         *      http/https: 都是从网络中请求资源
         *      jdbc:mysql: 是java连接mysql数据库的url前缀
         *      请求连接mysql数据库的ip地址：192.168.254.100
         *      端口号：3306 告诉连接驱动我们连接的是mysql服务
         *      告诉你要操作的数据库名：bigdata25
         *      useUnicode=True&characterEncoding=utf8
         *
         * user: 登录mysql数据库的用户名 root
         *
         * password: 登录mysql数据库的密码 123456
         */
        //mysql5.7之后，不建议用户直接与mysql服务连接，中间会有一个SSL令牌校验
        String url = "jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicode=True&characterEncoding=utf8&useSSL=false";
        String user = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url, user, password);


        System.out.println("=============数据库连接成功："+conn);



        //3.获取数据库操作对象（专门执行sql语句的对象）
        Statement statement = conn.createStatement();

        //4.执行SQL语句（DQL,DML…）
        /**
         *  在JDBC中 它将查询单独封装了一个方法，而其他的增删改单独一个方法
         *
         *  用于查询的方法
         *  ResultSet executeQuery(String sql) 执行给定的SQL语句，该语句返回单个 ResultSet对象。
         *
         *  用户增删改的方法
         * int executeUpdate(String sql) 执行给定的SQL语句，这可能是 INSERT ， UPDATE ，或 DELETE语句，
         * 或者不返回任何内容，如SQL DDL语句的SQL语句。
         */
        //增加
//        String sql = "insert into student values('110','洪文霁','男',18,'95033')";
//        int i = statement.executeUpdate(sql);
//        if(i==1){
//            System.out.println("数据添加成功！。。。");
//        }else {
//            System.out.println("数据添加失败！！");
//        }

        //删除
//        String sql2 = "delete from student where sno='110'";
//        int i1 = statement.executeUpdate(sql2);
//        if(i1==1){
//            System.out.println("数据删除成功！。。。");
//        }else {
//            System.out.println("数据删除失败！！");
//        }

        //修改
        String sql3 = "update student set sage=19 where sno='110'";
        int i = statement.executeUpdate(sql3);
        if(i==1){
            System.out.println("数据修改成功！。。。");
        }else {
            System.out.println("数据修改失败！！");
        }

        //6.释放资源（使用完资源后一定要关闭资源，Java和数据库之间属于进程间的通信，开启之后一定要记得关闭）
        conn.close();
    }
}
